//抽象类：包含抽象方法(抽象方法一般没有任何的集体内容实现)，也可以包含实例方法，抽象类是不能被实例化，为了让子类进行实例化及实现内部的抽象方法
//抽象类的目的或者是作用最终都是为子类服务的
(() => {
  abstract class Animal {
    abstract name:string = '小黑' 
    //报错，抽象方法不能有具体的实现
    abstract eat();
    //     console.log('趴着吃')
    // }

    sayHi() {
      console.log("你好");
    }
  }

  class Dog extends Animal {
    name:string = '大黄' 
    eat() {
      console.log("舔着吃");
    }
  }

  const dog: Dog = new Dog();
  dog.eat();
  console.log(dog.name)

  //报错，不能实例化抽象类的对象
  //const ani: Animal = new Animal();
})();
